<script setup>
import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
import userManager from './common/utils/user.js'
import { initSocket, closeSocket, resetReconnectCount } from './common/utils/websocket.js'
import messageCenter from './common/utils/messagecenter.js'

// App Launch
onLaunch(() => {
  console.log('App Launch')
  
  // 初始化消息中心
  messageCenter.initUnReadNum()
  
  // 检查登录状态并初始化 WebSocket
  if (userManager.checkLogin()) {
    const userInfo = userManager.getUserInfo()
    if (userInfo && userInfo.userId) {
      console.log('用户已登录，初始化 WebSocket')
      setTimeout(() => {
        initSocket()
      }, 500) // 延迟初始化，确保页面加载完成
    }
  }
  
  // 监听网络状态变化
  uni.onNetworkStatusChange((res) => {
    console.log('网络状态变化：', res.isConnected ? '已连接' : '已断开', '网络类型：', res.networkType)
    
    if (res.isConnected && userManager.checkLogin()) {
      // 网络恢复时重置重连次数并尝试连接
      resetReconnectCount()
      setTimeout(() => {
        initSocket()
      }, 1000)
    }
  })
  
  // 监听登录状态变化
  uni.$on('loginStatusChanged', (loginStatus) => {
    console.log('登录状态变化：', loginStatus)
    if (loginStatus) {
      // 登录后初始化WebSocket
      setTimeout(() => {
        initSocket()
      }, 500)
    } else {
      // 退出登录后关闭WebSocket
      closeSocket()
    }
  })
})

// App Show
onShow(() => {
  console.log('App Show')
  
  // 应用从后台进入前台时，检查登录状态并重新连接 WebSocket
  if (userManager.checkLogin()) {
    const userInfo = userManager.getUserInfo()
    if (userInfo && userInfo.userId) {
      // 重置重连次数
      resetReconnectCount()
      // 尝试初始化（如果已连接则不会重复创建）
      initSocket()
    }
  }
  
  // 更新TabBar徽章
  messageCenter.setTabBarBadge()
})

// App Hide
onHide(() => {
  console.log('App Hide')
  // 应用进入后台时，保持 WebSocket 连接以接收消息
  // 如果需要节省资源，可以取消下面的注释
  // closeSocket()
})
</script>

<style>
@import "./common/style/common.css";
@import "./static/css/system.css";
</style>